// 第一题
// 修改下面代码，顺序输出0-99
// 要求
// 1、只能修改setTimeout到Math.floor(Math.random)
// 2、 不能修改Math.fllor(Math.random()) * 1000
// 3\、 不能使用全局变量

function print(n) {
    setTimeout(() => {
        console.log(n);
    }, Math.floor(Math.random()) * 1000);
};

for(var i =0; i < 100; i++ ) {
    print(i);
};


// 1 自调用函数
function print(n) {
    setTimeout((() => {
        console.log(n);
        // 注意： 在某些存在安全策略的站点下settimeout第一参数如果是undefined会报错
        return () => {}
    })(), Math.floor(Math.random()) * 1000);
};

for(var i =0; i < 100; i++ ) {
    print(i);
};

// 2 自调用函数 -- call
function print(n) {
    setTimeout((() => {
        console.log(n);
        // 注意： 在某些存在安全策略的站点下settimeout第一参数如果是undefined会报错
        return () => {}
    }).call(null, []), Math.floor(Math.random()) * 1000);
};

for(var i =0; i < 100; i++ ) {
    print(i);
};


// 3 setTimeout 第三个参数
function print(n) {
    setTimeout(() => {
        console.log(n);
    }, 0, Math.floor(Math.random()) * 1000);
};

for(var i =0; i < 100; i++ ) {
    print(i);
};